Application awareness for virtual infrastructure environments

ABSTRACT

An application awareness system for a virtualized infrastructure. The application awareness system may use commands in standardized protocols to obtain data from virtual entities in the virtualized infrastructure. The data may be processed to indicate applications on specific virtual entities. The application awareness system may interact with those applications to gain information about the configuration of the application, or for a distributed application, components of the application on each of the plurality of virtual entities. These techniques may be applied to both virtual machines and containers, generating data that may be used in any of multiple management functions performed on the virtual infrastructure, such as backup, monitoring and resource allocation.

RELATED APPLICATIONS

This Application claims priority under 35 U.S.C. § 119(e) to U.S.Provisional Application Ser. No. 62/455,306, entitled “APPLICATIONAWARENESS FOR VIRTUAL INFRASTRUCTURE ENVIRONMENTS” filed on Feb. 6,2017, which is herein incorporated by reference in its entirety.

BACKGROUND

In enterprise computer environments, it is often desirable to know whatapplications are running on specific virtual entities. Some applicationsmay be business critical, such as a database application that managesall current sales transactions for the business, for example. Otherapplications may be important, but less critical, such as a server thathosts the website for the company. Other applications, such as a serverthat hosts an intranet for sharing employee news, may be less critical.

Knowledge of the specific applications executing on each of multiplecomputers, for example, may be used to better manage the computer systemof the enterprise. That knowledge may be used to set a data protectionpolicy, with data generated from computers running critical applicationsbeing replicated or copied to remote storage more frequently. As anotherexample, that knowledge may be used to balance load, such as by runningapplications that require significant computing resources on computersthat are not running other applications. Furthermore, the knowledge maybe used to monitor applications executing on the computer systems of theenterprise.

To determine which applications execute on specific machines, agents maybe deployed on those machines. The agents may be designed to work withspecific applications and may count the number of instances of theapplication running on the computer and report back to a centralizedcontroller.

SUMMARY

The inventors have recognized and appreciated techniques for operatingan enterprise computing system to collect information about applicationsrunning on entities. In addition, in some embodiments, information abouta configuration of an application may also be collected. Thesetechniques may be applied to determine applications installed or presenton virtual entities in a virtualized environment.

According to one aspect, a system is provided for gathering informationfrom a distributed computer system implementing a virtualinfrastructure, the virtual infrastructure comprising a plurality ofvirtual entities. The system comprises: a network interface; a memory;at least one processor operatively connected to the network interfaceand the memory; and a non-transitory computer readable medium comprisingcomputer executable instructions, that, when executed by the at leastone processor, implement: an application discovery component configuredto: execute, via the network interface, a protocol associated with anoperating system of a plurality of operating systems to establish acontrol path with the operating system, wherein the operating system isrunning on a virtual entity of the plurality of virtual entities;transmit, via the control path, a first set of program instructions tothe virtual entity that, when executed by the virtual entity, query anapplication registry associated with the operating system of the virtualentity for information associated with one or more applications;receive, via the control path responsive to the query, a first set ofdata; determine, from the first set of data, one or more applicationsinstalled on the virtual entity; and based on the determination of theone or more applications are installed, selectively store in the memory,information specifying that the one or more applications are installedon the virtual entity; a plurality of application probes, eachapplication probe associated with an application and configured to:select a second set of program instructions based on at least one of theone or more applications; transmit, via the control path, the second setof program instructions to the virtual entity; receive, responsive toexecution of the second set of program instructions by the virtualentity, a second set data from the virtual entity; determine, from thesecond set of data, a configuration of the at least one of the one ormore applications; store, in the memory, information specifying thedetermined configuration of the at least one of the one or moreapplications; and output the configuration information to a virtualinfrastructure management system, wherein the virtual infrastructuremanagement system comprises a data backup service or a monitoringservice.

According to one embodiment, the application discovery component isfurther configured to: transmit, to the virtual entity via the controlpath, a third set of program instructions that, when executed by thevirtual entity, search for a trace of an application on the virtualentity; receive, responsive to the execution, a third set of dataindicative of whether the trace is detected on the virtual entity; anddetermine, from the third set of data, if the application is installedon the virtual entity. According to another embodiment, the applicationdiscovery component is further configured to transmit the third set ofprogram instructions responsive to determining, from the first set ofdata, that the application is not installed on the virtual entity.

According to one embodiment, the non-transitory computer readable mediumcomprises computer executable instructions, that, when executed by theat least one processor, further implement a controller that isconfigured to execute the application discovery component and at leastone of the plurality of application probes responsive to detecting anaddition of a new virtual entity to the virtual infrastructure.

According to one embodiment, the non-transitory computer readable mediumcomprises computer executable instructions, that, when executed by theat least one processor, further implement a scheduler that is configuredto execute the application discovery component and at least one of theplurality of application probes responsive to detecting an expiration ofa time period.

According to one embodiment, the non-transitory computer readable mediumcomprises computer executable instructions, that, when executed by theat least one processor, further implement a controller configured to:execute a first stage in which the controller executes the applicationdiscovery component; and execute a second stage in which the controllerexecutes a set of application probes of the plurality of applicationprobes. According to another embodiment, the controller component isfurther configured to: identify, responsive to execution of the firststage, a set of applications determined to be installed on the virtualentity; and select, prior to execution of the second stage, the set ofapplication probes such that each application probe of the set ofapplication probes is associated with an application of the set ofapplications.

According to one aspect, a computer-implemented method for gatheringinformation about a virtual infrastructure comprising a plurality ofvirtual entities is provided. The method comprises: executing, by anapplication discovery component via a network interface, a protocolassociated with an operating system of a plurality of operating systemsto establish a control path via an interface of the operating systemconfigured for communication according to the protocol, wherein theoperating system is running on a virtual entity of the plurality ofvirtual entities; accessing, by the application discovery component viathe control path, first data associated with one or more applications ina data set associated with the operating system of the virtual entity;determining, by the application discovery component from the first data,that a particular application is installed on the virtual entity; andselecting an application probe based on the determined particularapplication; initiating, by the selected application probe, via thecontrol path, execution of program instructions at the virtual entity;receiving, by the application probe second data from the virtual entitygenerated based on execution of the program instructions at the virtualentity; determining, by the application probe based on the second data,a configuration of the particular application on the virtual entity; andoutputting to a virtual infrastructure management system, theconfiguration information.

According to one embodiment, the method further comprises determining,by the application probe, that the particular application is distributedacross a set of virtual entities. According to another embodiment, themethod further comprises identifying and storing, by the applicationprobe responsive to determining that the particular application is adistributed application comprising a plurality of components, a role ofa component of the distributed application installed on the virtualentity.

According to one embodiment, the method further comprises determiningthat the virtual entity has a unique IP address.

According to one embodiment, the method further comprises recognizingthat the virtual entity is a container and that the operating system isrunning on a host machine of the container.

According to one embodiment, the method further comprises determining astructure of one or more containers running on the host machine andidentifying an ID of the container.

According to one embodiment, the method further comprises removing allsets of program instructions transmitted to the virtual entity and anyitems produced on the virtual entity as a result of execution of thesets of program instructions.

According to one aspect, a computer-implemented method of collectingapplication information in a virtual infrastructure is provided, Themethod comprises: from an application discovery component, transmittingqueries to each of a plurality of virtual entities within the virtualinfrastructure, wherein the queries are formatted to elicit data fromthe plurality of virtual entities indicating presence of applications;from a probe deployment component, communicating to virtual entities ofthe plurality of virtual entities computer executable instructions;executing the computer executable instructions at the virtual entitiesto retrieve information about application configurations on respectiveones of the plurality of virtual entities; and storing data aboutapplications running on the plurality of virtual entities andconfiguration of the applications based on data received in response tothe queries and received as a result of executing thecomputer-executable instructions.

According to one embodiment, the method further comprises assigningcomputational resources to the plurality of virtual entities based onthe data about applications running on the plurality of virtual entitiesand the configuration of the applications.

According to one embodiment, the act of retrieving information aboutapplication configurations comprises discovering a role of a componentof a portion of a distributed application executing on a virtual entityof the plurality of virtual entities.

According to one embodiment, the act of transmitting queries to each ofthe plurality of virtual entities comprises querying operating systemregistries on the virtual entities.

According to one embodiment, the computer executable instructionscomprise scripts that are automatically executed on virtual entitiesupon deployment.

According to one embodiment, the act of transmitting queries to each ofthe plurality of virtual entities is performed on a time schedule.

According to one embodiment, the act of transmitting queries to each ofthe plurality of virtual entities is performed in response to detectingthat a virtual entity has been added to the virtual infrastructure.

According to one embodiment, the act of transmitting queries to each ofthe plurality of virtual entities comprises transmitting via acommunication mechanism of an operating system of the virtual entities.

The foregoing is a non-limiting summary of the invention, which isdefined by the attached claims.

BRIEF DESCRIPTION OF DRAWINGS

The accompanying drawings are not intended to be drawn to scale. In thedrawings, each identical or nearly identical component that isillustrated in various figures is represented by a like numeral. Forpurposes of clarity, not every component may be labeled in everydrawing. In the drawings:

FIG. 1 is a block diagram of an illustrative system 100 in which digitalinteractions may take place, in accordance with some embodimentsdescribed herein;

FIG. 2 is a block diagram of an illustrative system 200 showing digitalinteractions that may take place between elements of the system, inaccordance with some embodiments described herein;

FIG. 3 data flow diagram 300, illustrating data flow during applicationdiscovery performed by an exemplary application awareness system, inaccordance with some embodiments described herein;

FIG. 4 is a flow chart of an exemplary process 400 performed as part ofa technique for discovering which applications are installed on avirtual entity in accordance with some embodiments described herein;

FIG. 5 is a flow chart of an exemplary process 500 performed as part ofa technique to access information about an application installed on anentity in accordance with some embodiments described herein;

FIG. 6 is a flow chart of an exemplary process 600 to collect, process,and store information about an application installed on an entity foruse in virtual infrastructure management services in accordance withsome embodiments described herein;

FIG. 7 is a textual representation of data containing exemplaryinformation that may be received by running application probes inaccordance with some embodiments described herein;

FIG. 8 is a flow chart of an exemplary process 800 to discover and use arole of a virtual entity in a distributed application in accordance withsome embodiments described herein;

FIG. 9 is a flow chart of an exemplary process 900 to assign prioritiesto applications that may be running on one or more virtual entities inaccordance with some embodiments described herein;

FIG. 10 is a flow chart of an exemplary process 1000 to use applicationawareness information to execute application specific backup and/orrecovery in accordance with some embodiments described herein;

FIG. 11 is a flow chart of an exemplary process 1100 for determiningwhen to execute application discovery and/or probing activities inaccordance with some embodiments described herein;

FIG. 12 is a block diagram of an exemplary container based system 1200for hosting virtual entities that may be accessed in accordance withsome embodiments described herein;

FIGS. 13A-13B are sketches of exemplary computer user interfaces throughwhich a monitoring application displays on a computer screen informationcollected in accordance with some embodiments described herein;

FIGS. 14A-14B are sketches of exemplary embodiments of a computer userinterfaces through which a user may set back up policies of a databackup application, in accordance with some embodiments describedherein;

FIGS. 15A-C are example sets of pseudocode of program instructions thatmay be used to obtain information from a virtual entity, in accordancewith some embodiments described herein; and

FIG. 16 is a block diagram of an example computer system which may beused to implement embodiments described herein.

DETAILED DESCRIPTION

The inventors have recognized and appreciated that identifyingapplications executing on specific virtual entities, without the need todeploy agents on the virtual entities, may significantly enhance themanagement of an enterprise computer system. In accordance with someembodiments, applications may be identified for probing for informationdirectly indicating the presence of one or more applications on virtualentities within a virtual infrastructure of an enterprise computersystem.

A direct indication, for example, may be obtained from applicationinformation maintained by the operating system of the virtual entity onwhich the application is detected. Where direct indications of anapplication are not identified, applications may be detected indirectly,such as by finding traces indicative of the application. When sufficientindications of an application are detected, that application may bedeemed to have been detected.

The information about executing applications may be obtained from anysuitable dataset maintained by or for the virtual entity. The datasetmay act as a registry of applications. The registry may be formatted asa database that stores information about applications installed on avirtual entity. Such a registry, for example, may be managed by anoperating system of the virtual entity with applications writing data tothe database as they are installed. However, it is not a requirementthat information about installed applications be obtained from aregistry be specifically created as a repository of information aboutapplications, as any set of information, in any accessible format, mayserve as a dataset from which information about an application may beobtained.

As another example, in some embodiments, information about installedapplications may be obtained from the presence of files in a directory.The files, for example, may provide information about executingprocesses, with, for example, one file per process. The operatingsystem, or other suitable component, may create in a predetermineddirectory a file for each process as the process is launched. Byaccessing contents of the files in that directory, information abouteach executing process may be determined, and that information mayindicate the application that initiated the process. In this way, theset of files in in that directory may serve as a dataset holdinginformation about executing applications.

As another example, in some embodiments, information about installedapplications may be stored in initialization, configuration or othertypes of files associated with respective applications may serve as adataset from which application information may be obtained. In someembodiments, the presence of a file may indicate that a specificapplication is installed. For example, an application may have aninitialization file with a unique name such that, if an initializationfile with a name associated with that application is found on acomputer, the system may deem that the application is present. In otherembodiments, data within a file may indicate that an application isinstalled. An initialization file, for example, may contain commands ormetadata identifying an application, based on which the system may deemthat the application is installed. These files may be stored in one ormore directories or other predefined locations in computer memoryassociated with the virtual entity such that identifying files or otherdata sets stored in those locations indicates installed applications.Alternatively, all or portions of the computer memory associated with avirtual entity may be searched for files or other data of a typeindicating the presence of an application.

In some embodiments, the information obtained from a data store mayindicate that an application is installed on the virtual entity, but maynot reveal whether the application is executing. In some embodiments,further processing may be performed, once an installed application isidentified to determine whether the application is executing. Thatfurther processing, may include interacting with the application, whichmight only be possible if it is executing, or otherwise determining ifit is executing. Accordingly, it should be appreciated that any suitabletechnique or combinations of techniques may be employed to identifyexecuting applications on each virtual device of a plurality of virtualdevices.

However, the inventors have recognized that techniques that enable anapplication awareness system to gain information about applicationsthrough standardized interfaces at the virtual entities may greatlyexpand the utility of the application awareness system. The interfacesmay be generic interfaces supported by an operating system at a virtualentity on which applications might execute. Using such standardizedinterfaces, rather than special software or special interfaces installedon the virtual entities, may significantly expand the set ofapplications that can be discovered on specific virtual entities. Inaccordance with some embodiments, standard operating system protocolsare used to extract information from virtual entities. Standardprotocols may be used to transmit program instructions to a virtualentity that, when executed by the virtual entity, may retrieveinformation indicating presence or lack of presence of applications. Theinformation extracted using those standard protocols, includinginformation as described above that is read from a registry, may beprocessed to determine presence of one or more applications.

In addition to detecting presence of an application of interest,information about its configuration may be detected. For example, thesize of a data store maintained by the application or the role of anapplication instance on the virtual entity in a distributed applicationmay be detected. This configuration information may be used in varioussystem management functions. For example, when an application is made upof multiple components that may be distributed across multiple virtualentities, identifying the role of the components executing on eachvirtual machine may be used in setting a backup policy or in assigningresources to the virtual entity. As a specific example, an applicationmay have some components that implement processing nodes and storagenodes. As a virtual infrastructure enables resources to be allocated todifferent virtual entities, the processing nodes may be allocated moreprocessing resources than the storage nodes. In contrast, the storagenodes may be allocated more memory resources than the processing nodes.As another example, when establishing a backup policy, the storage nodesmay be backed up more frequently than the processing nodes. Accordingly,it should be appreciated that configuration information may be used inany of multiple ways.

As the application awareness system may collect configurationinformation after applications have been discovered, the applicationawareness system may rely on information already gathered about theapplication to gain information about the configuration of theapplication. Configuration information, for example, may be collected inany suitable way, such as by making calls through interfaces of theapplication, or examining files through the file system. In someembodiments, these calls may be made from a self-deleting script thatmay be installed on the virtual entity. That script may be configured toaccess configuration information and send it back to the applicationawareness system.

Regardless of how this information is detected, it may be used forreporting and management services.

FIG. 1 shows an illustrative system 100 via which digital interactionsmay take place, in accordance with some embodiments. In this example,the system 100 includes an application awareness system 110, a virtualinfrastructure management system 150, and a virtual infrastructure 130.

In some embodiments the application awareness system 110 may interactwith a virtual infrastructure 130 that comprises a plurality of virtualentities, such as virtual entities 132, 134, and 136. Each virtualentity may comprise an emulation of a physical computing device on whichapplications may be installed and executed. The virtual entity maycomprise underlying hardware resources, which may be programmed, whichas with software sometimes referred a hypervisor, to emulate one or morevirtual entities. In many scenarios, a virtual entity may share physicalresources with other virtual entities. Each virtual entity may have aset of applications installed on it. Virtual entities may be accessed byusers 138 using computers or other devices (e.g. devices 140), which maybe coupled, such as over a computer network, to the hardware resourceson which the virtual entities execute. The user may access the virtualentity over a network such as the Internet. The virtual infrastructure130 may instantiate a virtual entity to use for the user. The user maythen utilize the virtual entity as its own machine with its own set ofinstalled applications.

In some embodiments, a virtual entity may comprise a virtual machine. Avirtual machine is a virtualized computer emulation that runs its ownoperating system. Other types of virtual entities are possible. Forexample, a virtual entity may comprise a container. A container is avirtualized computer emulation that shares physical hardware resourcesand portions of an operating system with other containers.

An enterprise may establish a virtual infrastructure 130, containing oneor more virtual entities. For example, an IT administrator for theenterprise may configure one or more physical servers to host virtualentities. Applications, or portions of applications may be loaded oneach virtual entity. The characteristics of each virtual entity may beconfigured by the IT administrator. For example, some virtual entitiesmay be set up so that they can access large amounts of data storagewhile other virtual entities may be set up to access relatively smallamount of data storage. Other virtual entities may be configured so thatthey consume a relative high percentage of available processing cyclesof the underlying physical hardware, while other virtual entities may beconfigured to consume relatively small amounts of available processingcycles. An IT administrator may configure the virtual entities based onthe types of applications that the IT administrate can ascertain areloaded on the virtual entity or expects to be loaded on it. Such avirtual infrastructure may be created in any suitable way, includingusing technology as is known in the art.

In some embodiments, various management services may be executed onvirtual infrastructure 130. The virtual infrastructure management system150 may include one or more components to execute these services. One ormore users 160, which may be IT administrators for an enterprise, forexample, may access these services using computers or other suitabledevices 162. These services may include data backup service 152, datarecovery service 154, resource allocation service 156 and other services158. Such services may be implemented in any suitable way, includingusing techniques and components as are known in the art.

In some embodiments, the management services may be configured based onthe applications installed on the virtual entities in the virtualinfrastructure 130. Information about the applications installed on eachvirtual entity may be obtained in any suitable way, including based onuser input. However, in embodiments described herein information aboutapplications installed on each virtual entity may be obtained, in wholeor in part, from application awareness system 110. As a result moreinformation about applications installed on each virtual entity may beavailable or that information may be obtained more efficiently or moreoften than is possible as a result of manual input for improvedexecution of virtual infrastructure management services.

The application awareness system 110 may be implemented on one or moreservers connected to a network used by an enterprise that operates oneor more virtual entities. The network for example, may be an intranet ofa large company. The application awareness system 110 may carry outvarious digital interactions, including discovering applicationsexecuting on each virtual entity and its configuration, with one or moreentities that are part of virtual infrastructure 130 in order to providedata that may be used by the virtual infrastructure management system150. Virtual entities in the infrastructure may have distributedapplications installed on them. Virtual entities that run a distributedapplication may have various roles for the distributed application. Theapplication awareness system 110 discover roles of virtual entities indistributed applications.

The of virtual infrastructure 130 may be made up of multiple physicalcomputing devices networked together. Software, such as a hypervisor,executing on those physical resources may create virtual entities, suchas virtual machines or containers. Each containers may have an operatingsystem, which may be dedicated to the virtual entity, shared amongmultiple virtual entities or have parts that are shared among multiplevirtual entities and parts that are dedicated to a single virtualentity.

The number and type of virtual entities, and the applications thatexecute on each, is not critical to the invention. Rather, theconfiguration of the virtual infrastructure may depend on the nature ofthe enterprise that is using virtual infrastructure 130. The virtualinfrastructure may, for example, be multiple virtual servers that maycollective implement business functions for the enterprise, such ase-mail, document storage and retrieval, order processing, payrollprocessing, or resource planning. Alternatively or additionally, thevirtual entities may be single user entities, such as user desktops.

Regardless of the nature of the virtual entities and the applicationsthey execute, the virtual infrastructure may be managed. In oneembodiment, The virtual infrastructure management system 150 may manageand execute various services for virtual infrastructure 130. Digitalinteractions between the various systems may take place via the Internetor other network interface. Virtual infrastructure management system 150may be a management system performing functions as is known in the art.It may be or include, for example, a utility that manages dataprotection services, such as back up. Such a system for example, may beconfigured to set a frequency at which data from a system is backed upor a quantity of resources, such as network bandwidth or storage isallocated for backup. These management functions may be performed foreach of multiple virtual entities in the virtual infrastructure 130.Control of these management functions may be performed on a per-virtualentity basis. In accordance with some embodiments, virtualinfrastructure management system 150 may be configured to apply rules,heuristics or other algorithms to determine, for each virtual entity, anallocation of resources or select a management function based on theidentity of an application or applications executing on that virtualentity and/or the role of the application components executing on thatvirtual entity.

It should be appreciated that each of the systems illustrated inexemplary system 100 may engage in other types of digital interactionsand activities in addition to, or instead of, those mentioned above, asaspects of the technology described herein are not limited to theanalysis of any particular type of digital interactions. Also, digitalinteractions are not limited to interactions that are conducted via anInternet connection. For example, digital interactions may take placeover wired connections.

In some embodiments, the application awareness system 110 may engage indifferent types of interactions with the virtual infrastructure 130. Forinstance, the application awareness system 110 may query entities of thevirtual infrastructure 130 to discover applications executing on them.Furthermore, the application awareness system 110 may search entitieswithin virtual infrastructure 130 for traces of applications installedon the entities. Additionally, the application awareness system 110 mayaccess entities within virtual infrastructure 130 to determineconfiguration information about applications that may be installed onthe entities. In some embodiments, the application awareness system 110may access configuration information by transmitting programinstructions to virtual entities and commanding execution of the programinstructions.

In some embodiments, the application awareness system 110 may interactwith the virtual infrastructure management system 150. The applicationawareness system 110 may provide information for the virtualinfrastructure management system 150 to use in carrying out one or moreservices. Furthermore, the virtual infrastructure management system mayrequest and retrieve information from the application awareness system110.

In some embodiments, the virtual infrastructure management system 150may carry out one or more services for the virtual infrastructure 130.The virtual infrastructure management system 150 may retrieve and senddata from entities in the virtual infrastructure 130 and also send andreceive commands to and from entities in the virtual infrastructure 130.

In some embodiments, the application awareness system 110 may compriseof a plurality of components. The system 110 may include an applicationawareness processor 112, an application discovery component 114, and oneor more application probes 116, 118, 120, and application awareness data122 that may be stored in database 124. The application awarenessprocessor 112 may manage the app discovery component 114 and use it tocarry out application discovery actions on one or more entities invirtual infrastructure 130. Furthermore, the application awarenessprocessor may use the application probes 116, 118, 120 to gatherinformation from entities in virtual infrastructure 130. The applicationawareness processor may gather information from the applicationdiscovery component 114 and from running probes 116, 118, 120, processthe information, and store data 122 in database 124.

It should be appreciated that the components of the applicationawareness system 110 may reside on any one or multiple suitablecomputers or other devices. The devices may be collocated or distributedacross multiple locations and communicate over a network interface. Inother embodiments, the application awareness system 110 may reside on asingle device. In some embodiments, application awareness system 110 mayexecute on a plurality of virtual entities.

In some embodiments, the application awareness processor 112 may be runby one or more processors executing a set of code stored in memory. Theapplication awareness processor 112 may be configured to execute varioussystem components including app discovery component 114 and applicationprobes 116, 118, 120. The app discovery component 114 may be configuredto carry out actions associated with interrogating and searching anentity to discover applications that may be installed on the entity. Theapplication probes may be configured to carry out actions associatedwith interrogating and searching an entity to retrieve information aboutapplications installed on the entity.

In some embodiments, the application awareness system 110 may accessinformation that exists on virtual entities to discover installedapplications on the virtual entities. Furthermore, the applicationawareness system 110 may access configuration information aboutapplications discovered to be installed on the virtual entities. In someembodiments, the application awareness system 110 may operate in twostages: an application discovery stage and an application probing stage.The application awareness system 110 may, for example, execute theapplication discovery component 114 in the first stage during which theapplication discovery component 114 discovers applications that areinstalled on one or more virtual entities of virtual infrastructure 130.In the second stage, the application awareness system 110 may thenexecute one or more application probes (e.g. probes 116, 118, 120) toaccess configuration information about the installed applications fromthe virtual entity.

It is appreciated that the application discovery component 114 andapplication probes 116, 118, 120 can gather information without a needof special agents installed on the virtual entities or machines hostingthe virtual entities. The application discovery component 114 andapplication probes 116, 118, 120 can execute processes without softwareor interfaces outside of those available with the standard operatingsystem in order to interrogate and search the virtual entities forpresence of applications. The application discovery component 114 andapplication probes 116, 118, 120 may cause a virtual entity to executeinstructions through standard protocols.

In some embodiments, the application awareness system 110 may beconfigured to communicate with various operating systems (e.g. Windows,Linux, Unix, etc.) contained in or used by one or more of the virtualentities. In some embodiments, the application awareness system 110 mayutilize standard protocols provided by the operating systems toestablish an interface through which the application discovery component114 and the application probes 116, 118, 120 can communicate with andcontrol the virtual entities. The application awareness system 110 mayutilize various protocols associated with various operating systems toestablish an interface with a virtual entity and is not limited to anyparticular operating system or type of protocol described herein.Operating systems and protocols discussed herein are presented by way ofexample and not limitation. The application awareness system 110 mayfurther be expanded to establish an interface with any number ofoperating systems with associated connection protocols.

In some embodiments, the application discovery component 114 mayestablish a control path with a virtual entity by executing a standardprotocol associated with an operating system of the virtual entity. Theapplication discovery component 114 and application probes 116, 118, 120may then use the control path to communicate with the virtual entity.For example, the application awareness component 114 may execute aWindows Remote Management protocol to establish a control path with avirtual entity with a Windows operating system. In another example, theapplication discovery component 114 may execute an SSH protocol toestablish a control path with a virtual entity with a Linux operationsystem.

In some embodiments, the application discovery component 114 may accessinformation on a virtual entity to discover applications installed onthe virtual entity. In some embodiments, the application discoverycomponent 114 may query a registry of a virtual entity and determinewhether one or more applications are installed on the virtual entitybased on the response to the query. Additionally or alternatively, theapplication discovery component 114 may determine whether traces of anapplication that indicate that the application is installed exist on thevirtual entity.

In some embodiments, the application discovery component 114 maydirectly communicate with a virtual entity over a control interface toquery the virtual entity and/or determine presence of traces on thevirtual entity. For example, the application discovery component 114 maycommunicate queries of an application registry of the virtual entity andreceive information (e.g. attribute value pairs in response). Theapplication discovery component 114 may then determine whether one ormore applications are installed based on the query response. In anotherexample, the application discovery 114 may communicate commands tosearch for a particular path to determine if an application is installedon the virtual entity. Additionally or alternatively, the applicationdiscovery component 114 may issue commands to retrieve a product code orother item that would exist if the application is installed on thevirtual entity. The application discovery component 114 may use theresponses to determine whether one or more applications are installed onthe virtual entity.

In some embodiments, the application discovery component 114 maytransmit program instructions to a virtual entity over an establishedcontrol path or otherwise cause the virtual entity to access programinstructions, such as by causing the virtual entity to download theprogram instructions from a server or other location. The applicationdiscovery component 114 may further send instructions to execute programinstructions on the virtual entity. Additionally or alternatively, theapplication discovery component 114 may control the virtual entity andinitiate execution of the transmitted program instructions.

For example, the application discovery component 114 may transmitvarious executable scripts (e.g. PowerShell scripts, Bash Shell scripts)to a virtual entity. The application discovery component 114 may thenissue a remote command to cause the virtual entity to execute thescripts. The scripts, when executed by the virtual entity, may query aregistry for information (e.g. attribute value pairs) associated with anapplication. Additionally or alternatively, the scripts, when executed,may gather information from configuration files associated with anapplication.

In another example, the application discovery component 114 may transmitscripts that, when executed, may search for a particular path todetermine if an application is installed on the virtual entity.Additionally or alternatively, the scripts, when executed, may attemptto retrieve a product code or other item that would exist if theapplication is installed on the virtual entity.

In some embodiments, the application awareness processor 112 may run oneor more application probes such as probes 116, 118, and 120 to collectconfiguration information about applications installed on a virtualentity. Each probe may be associated with a particular application andbe configured to gather configuration information about the application.

In some embodiments, a probe may be configured to transmit a set ofprogram instructions to a virtual entity over an established controlpath or otherwise cause the virtual entity to access programinstructions, such as by causing the virtual entity to download theprogram instructions from a server or other location. The probe mayfurther cause the virtual entity to execute the program instructions.The program instructions, when executed by the virtual entity, may causethe virtual entity to carry out actions and generate an output responsethat is retrieved by the probe and processed to extract applicationinformation. The probe may use the information to the information todetermine a configuration of an application. For example, an applicationprobe may transmit one or more executable scripts (e.g. PowerShellscripts, Bash Shell scripts) to a virtual entity. The probe may thenissue a remote command to cause the virtual entity to execute thescripts. The scripts, when executed may carry out actions and produceresponses. The probe may process the responses to determine aconfiguration of an application.

In one embodiment, the application discovery component 114 andapplication probes 116, 118, 120 may be further configured to removetraces of their operation from a virtual entity. The applicationdiscovery component 114 and application probes 116, 118, 120 mayautomatically clean, from the virtual entity, files and data producedand/or placed on the virtual entity during processes of applicationdiscovery and/or application probing. In some embodiments, theapplication discovery component 114 and application probes 116, 118, 120may retrieve files and data generated during the application discoveryand probing for further processing and then delete the files and datafrom the virtual entity.

In some embodiments, transmitted program instructions may includeinstructions to self-delete after execution. For example, theapplication discovery component or a probe may transmit a script(s) to avirtual entity and command the virtual entity to execute the script(s).As a result of executing the script(s), the virtual entity may producefiles. Upon finishing execution of the script(s), the probe may commandthe virtual entity to delete the script(s) file(s) and any filesproduced or the script may contain code that causes the virtual entityto delete the script(s) and produced file(s).

In some embodiments, the application awareness processor 112 may processinformation collected from the virtual entities to generate applicationawareness data 122. The application awareness data 122 may compriseinformation about one or more entities. The information may include alisting of applications installed on an entity, configurations ofapplications installed on the entity, a role of the entity for adistributed application, and other information. The data 122 may bestored in a database 124. The database 124 may comprise a set of datastored in one or more computers or other devices. The database 124 maybe accessed by a database API to read, write, modify, and delete datafrom the database.

Application information may be used in any suitable way. In someembodiments, the virtual infrastructure management system 150 includesan application data backup component 152. The application data backupcomponent 152 may be configured to set policies for backing up data forapplications installed on one or more virtual entities in virtualinfrastructure 130. The application data backup component 152 mayfurther access data from application awareness system 110 to use forsetting data backup policies and executing data backup operations.

In some embodiments, the virtual infrastructure management system 150includes an application data recovery component 154. The applicationdata recovery component 154 may be configured to set policies for datarecovery for applications installed on one or more virtual entities invirtual infrastructure 130. The application data recovery component 154may be configured to access data from the application awareness system110 to set recovery policies and execute data recovery operations. Inone embodiment, the data recovery component 154 may utilize informationindicating which applications are installed on a particular virtualentity to determine one or more application specific recovery policiesfor the virtual entity. For example, the data recovery component mayhave a plurality of backup policies for a plurality of applications orfor a plurality of characteristics of applications, such as criticalityor amount of data generated by an application. By gaining information ofwhich applications are installed on a virtual entity, the data recoverycomponent 154 may select a backup policies associated with applicationsinstalled on the virtual entity.

In some embodiments, the virtual infrastructure management system 150may further include a resource allocation component 156 configured toallocate resources, such a compute time or memory, to virtual entities.The resource allocation component 156 may access data from theapplication awareness system 110 to set policies for resource allocationand execute resource allocation operations. In one embodiment, theresource allocation component 156 may have a priority of applicationimportance. By utilizing knowledge of which applications are on whichentities of virtual infrastructure 130, the resource allocationcomponent 156 can set policies to provide more resources to virtualentities running applications of higher priority. In another embodiment,the resource allocation component 156 may assign resources according toa configuration of an application on a virtual entity. For example, theresource allocation component 156 may set policies to provide greaterresources to a virtual entity acting as a primary server for anapplication than to a virtual entity acting as a secondary server for anapplication.

In some embodiments, the virtual infrastructure management system 150may include monitoring services as part of one or more of the componentsor as a separate component. The system 150 may provide users 160 livemetrics and statistics about virtual entities installed in virtualinfrastructure 130. The metrics and statistics may be discovered on oneor more devices 162 to the users. The system 150 may, for example,provide a visual display showing computation resources being used by oneor more of the virtual entities. Additionally or alternatively, thesystem may provide a visual display of applications installed on one ormore of the visual entities. In some embodiments, the monitoringservices may access application awareness data specifying roles ofvirtual entities for one or more distributed applications installed onthe virtual entities. The monitoring services may then display virtualentities with their corresponding roles and resource usage.

It should be appreciated that the virtual infrastructure managementsystem may include other components to execute other services 158 forthe virtual infrastructure 130. Embodiments are not limited to theservices illustrated in exemplary system 100. Further, the components ofthe virtual infrastructure management system 150 may be implemented onone or more separate machines. Any or all of the components may beimplemented across multiple machines in a distributed fashion and/or invarious combinations, including network-distributed (e.g.,client-server) implementations.

FIG. 2 illustrates an example embodiment of an application awarenesssystem interacting with one or more virtual machines 228. Theillustrated system may comprise application awareness system 110 withreference to FIG. 1.

In some embodiments, the system (e.g. system 110) may comprise a set ofapplication probes 210. The set of application probes may include aprobe for each application. The system may further include anapplication program interface 220 to access probes and to run probes.The probes may use multiple interfaces to collect information from thevirtual entities such as remote access 222, open database connectivity(ODBC) 224, application specific software development kits (SDK) 226,and other interfaces.

In some embodiments, the application awareness processor 112 may accessapplication probes 210. The application probes 210 may comprise aseparate application probe for each application. For example, theapplication awareness system (110) may include an SQL Server probe 212,a Microsoft Exchange probe 214, a XenDesktop probe 216, as well asprobes for other applications. Each probe may transmit a specializedprogram instructions to a virtual entity that, when executed by avirtual entity, is configured to cause the virtual entity to carry outactions to generate information about the application associated withthe probe. In another example, a probe may control execution of a set ofdatabase query operations that may be executed to retrieve informationfor a respective application.

In some embodiments, the application awareness system (e.g. system 110)may include an application program interface (API) 220. The API 220 mayprovide an interface by which the system may probe various virtualentities. The API 220 may include code that can access applicationprobes. In one embodiment, the API 220 may include code to accessindividual application probes to gather information about a particularapplication. The code may call an application probe to execute processesassociated with gathering information for an application associated withthe application probe. For example, the API 220 may receive a set ofinstalled applications (e.g. from the application discovery component114). The API 220 may then call application probes associated with theinstalled applications to gather information about the installedapplications.

In some embodiments, the API (e.g. API 220) may include a remotemanagement framework 222 to transmit program instructions and controlremote execution of the program instructions. The remote managementframework 222 may allow probes of the application awareness system (e.g.system 110) to transmit program instructions (e.g. scripts) and commandexecution of the program instructions. The scripts may cause the virtualentity to perform actions to generate information about a respectiveapplication. The scripts may, for example, comprise PowerShell and/orBash Shell scripts that are executed using services such as WindowsRemote Management (WinRM) or a secure shell (SSH). WinRM may allow theapplication awareness system to remotely connect to a virtual entity andthen command a virtual entity to execute scripts. SSH may allow theapplication awareness system to gain remote access to the virtual entityand use the remote access to command execution of one or moreapplication probe scripts.

In one embodiment, an application probe may access an ODBC interface224. The ODBC interface 224 provides a standard way of accessing avariety of database management systems. An application probe may, forexample, transmit a set of instructions that may be executed by thevirtual entity using the ODBC interface 224 to access various databases.The instructions may comprise various query operations, for example, toretrieve information from a database about a respective application.

In another embodiment, the an application probe may access one or moreapplication specific software development kits (SDK) 226 which can beused to access information from specific applications. An SDK mayprovide a standard by which a particular operation system or applicationmay be accessed. For example, a Java SDK for an operating systemexecuting on a virtual entity may allow the application awareness systemto access information about an application using programmed instructionscoded in Java. Application probes may transmit program instructions thatcause the virtual entity to utilize SDKs to access specific applicationinformation.

FIG. 3 illustrates an exemplary system data flow 300 through which theapplication awareness discovery system 320 may find which applicationsare installed on a virtual entity 310. The application awareness system320 shown in FIG. 3 may be an embodiment of the exemplary applicationawareness system 110 shown in FIG. 1.

In some embodiments, the application discovery component 320 mayestablish a communication interface with an operating system executingon a virtual entity 310. The application discovery component 320 mayexecute a standard protocol available for the operating system to createan interface over which the application discovery component 320 canaccess information on the virtual entity 310 such as by querying andsearching the virtual entity 310. In the case of a Windows operatingsystem, for example, the application discovery component 320 mayremotely connect using a protocol for Windows such as Windows RemoteManagement. In one embodiment, the application discovery component 320may then transmit and command execution of program instructions that,when executed by the virtual entity, carry out actions for variousprocesses associated with application discovery.

For a Linux operating system, the application discovery component 320may utilize a protocol available with Linux, such as SSH. Theapplication discovery component 320 may establish an SSH interface anduse it to transmit and command execution of program instructionsassociated with various application discovery processes. In anotherembodiment, the application discovery component 320 may remotely executecommands in order to cause the virtual entity 310 to carry out actions.The application discovery component 320 may use responses to the actionsto discover presence of applications.

The application discovery component 320 is not limited to any particularoperating system. The application discovery component 320 may use anystandard protocol available with an operating system of a virtualentity. The application discovery component 320 does not requireadditional software installed or availability of additional interfacesin order to execute application discovery processes.

In some embodiments, the application awareness discovery system 320 mayexecute multiple processes to discover which applications from a set ofapplications are installed on a virtual entity (e.g. virtual entity310). One process that the system 320 may execute is process 322, wherethe system 320 queries the virtual entity 310 to determine whether oneor more applications are installed on the machine. Another process thatthe system 320 may execute is process 324, where the system 320 searchesthe virtual entity 310 for traces of one or more applications. Theapplication awareness system 320 may then use the responses 326 from thequery process 322 and the results 328 from the application trace searchprocess to get a set of apps 330 discovered on the virtual entity 310.All applications that are searched for may not be present on the virtualentity such as app 5 332. In illustrated example 300, the set ofdiscovered applications would not include app 5 because it has nodetectable presence in the virtual entity 310.

In some embodiments, a virtual entity 310 may include an operatingsystem (OS) 312 and applications 316 that are installed on the virtualentity. The OS 312 may include a data store of information aboutapplications, such as a registry of applications that are installed onthe virtual entity. The virtual entity 310 may have several applicationsinstalled on the virtual entity 310.

However, the data In some embodiments, applications may have traces suchas trace 318 on the virtual entity. Traces of an application may includeinformation stored on or in connection with the virtual entity thatindicates presence of that application on the virtual entity. Forexample, if a virtual entity has a particular application installed(e.g. SQL Server, Microsoft Exchange, etc.), the virtual entity may haveparticular files, folders, and file types that are associated with theapplication. These files, and therefore the associated applications, maybe identified for example, by the names of these files, extensions ofthese files, locations of these filed, the data contained in these filesor metadata associated with these files.

In some embodiments, the registry 314 may comprise a dataset ofinformation about applications that are installed on the virtual entity(e.g. virtual entity 310) The registry 314, as discussed above, maycomprise a database that stores settings for applications installed onthe virtual entity 310. In one example, the virtual entity 310 may beinstalled on a Windows OS. The registry 314 in this case may comprisethe Windows registry which comprises a hierarchical database that storeslow-level settings for applications installed on the virtual entity 310.In another example, the virtual entity may be running a Linux OS. Inthis case, the virtual entity may have a registry that includes severaldirectories which include information about installed applications.

In some embodiments, the virtual entity 310 may additionally have tracesof applications that are installed on the virtual entity 310. A trace ofan application may comprise a sign that the respective application ispresent on the virtual entity 310. In one example, a trace may includespecific file extensions, file formats, code, system logs, or otheritems that indicate that a respective application is installed onvirtual entity 310. The application discovery component 320 may transmitprogram instructions to the virtual entity that, when executed, searchfor presence of traces of an application on the virtual entity 310 inorder to determine if the application is installed on the virtual entity310. The traces may form a data set, containing information of anysuitable type that is stored on a virtual entity when an application isinstalled on or executes on a virtual entity.

It should be appreciated that the example shown in FIG. 3 and describedabove is provided solely for purposes of illustration. Aspects of thetechnology described herein are not limited to only the illustratedprocesses of application discovery. Further, the application awarenesssystem may search for any number of applications.

FIG. 4 is a flowchart of exemplary process 400 for discovering whichapplications from a set of applications are installed on a virtualentity. The process 400 may be performed by any suitable system and/orcomputing device and, for example, may be performed by applicationawareness system 110 described with reference to FIG. 1.

Process 400 begins at act 408, where the application awareness systemexecuting process 400 (e.g. application awareness system 110)establishes a control interface with a virtual entity. In oneembodiment, the application awareness system may identify a specificvirtual entity according to a unique ID associated with the virtualentity. For example, the application awareness system may identify andconnect to a virtual entity over a network interface using an IP addressof the virtual entity. The system may discover all the unique IPaddresses in a virtual infrastructure. Additionally or alternatively,the system may receive a list of virtual entity IDs (e.g. IP addresses)in a virtual infrastructure.

The system may execute a standard protocol available with an operatingsystem of the virtual entity (e.g. Windows Remote Management, SSH, etc.)in order to establish a control interface with the operating system ofthe virtual entity as discussed above. The application awareness systemmay then select an application from a set of applications for which tosearch a virtual entity. The application awareness system may maintainone or more sets of applications. A set of applications may be specifiedand modified by a user. The application awareness system may be capableof determining whether each application in the set of application isinstalled on a virtual entity. The application awareness system allowscan be expanded to be able to determine a presence of any number ofapplications.

Next, process 400 proceeds to act 410 where the application awarenesssystem executing process 400 may select an app in response to a commandto execute application discovery on a virtual entity or in response toan event. The application awareness system may store the one or moresets of applications in a suitable database and access the one or moresets for application discovery. It is further appreciated that in someembodiments the application awareness system may query a plurality ofvirtual entities concurrently to collect information about a selectedApplication. This may allow the application awareness system toefficiently gather information about many entities of a virtualinfrastructure. Exemplary process 400 illustrates a set of steps thatmay be executed for one of the plurality of virtual entities.

Next, process 400 proceeds to act 420, where the system executingprocess 400 queries the virtual entity and searches the virtual entityfor traces of the selected application to determine if the selectedapplication is installed on the virtual entity. If the virtual entity isa virtual machine, the application awareness system may submit a queryto a registry in the OS of the virtual machine asking if the applicationis registered in the registry. For example, if the virtual machine isrunning a Windows OS, the application awareness system may generate andsubmit a query to the Windows registry to determine if an entry existsfor the selected application. The Windows registry query may include oneor more keys that may exist in the registry if the selected applicationis installed on the virtual entity. In another example, if the virtualmachine is running a Linux OS, the system may search directories forconfiguration files associated with installed applications.

In some embodiments, the application awareness system may transmitprogram instructions that, when executed by the virtual entity, causethe virtual entity to carry out query and/or search operations. Theprogram instructions, when executed by the virtual entity, may query aregistry of the virtual entity to determine if the selected applicationis installed. For example, if the virtual entity is a virtual machinerunning Windows OS, the program instructions may cause the virtualentity to generate and submit a query to the Windows registry todetermine if an entry exists for the selected application. In anotherexample, if the virtual entity is running a Linux OS, the programinstructions, when executed, may search directories of configurationfiles associated with installed applications. The application awarenesssystem may retrieve responses from execution of the program instructionsand process them to determine presence of the selected application.

In some embodiments, the application awareness system may include astored set of query searches to use for a given application. When anapplication is selected for discovery on a virtual entity, the systemmay access a corresponding query search that is specific to the selectedapplication. Application queries may be defined, for example, when a newapplication is added to the application awareness system for discovery.

In some embodiments, the application awareness system may include storedsets of program instructions to use for a given application. When anapplication is selected for discovery on a virtual entity, theapplication awareness system may access a corresponding set of programinstructions that, when executed by the virtual entity, query and searchfor presence of the selected application. Program instructions may bedefined, for example, when a new application is added to the applicationawareness system for discovery.

The system may further search for traces of the selected application.The system may search for indications that the application is present onthe system. The system may, for example, search for particular filetypes on the virtual entity that are associated with the application.The system may further search logs for traces of the application. In oneembodiment, the system may search certain folders for presence ofcertain files.

In some embodiments, the application awareness system may searchdifferent parts of the virtual entity and access various applicationsand files in the virtual entity. In one embodiment, the system mayattempt execution of certain commands on the virtual entity. Based on aresponse to those commands, the system may determine if traces of theapplication are present on the virtual entity.

In some embodiments, the application awareness system may transmitprogram instructions to the virtual entity that, when executed by thevirtual entity, search for traces of the selected application. Thevirtual entity may search for particular file types, logs, and/orfolders for presence of the selected application. The virtual entity,when executing the program instructions, may further attempt executionof certain commands.

As discussed above with respect to some embodiments, the applicationawareness system may cause a virtual entity to execute a set oftransmitted program instructions (e.g. executable script files). In oneembodiment, the system may transmit the program instructions to thevirtual entity and command the virtual entity to execute them in orderto execute querying and searching processes. The application awarenesssystem may, for example, transfer scripts as payload text over anestablished interface (e.g. Windows Remote Management, SSH, etc.). Inother embodiments, the system may further transfer program instructions(e.g. scripts) that, when executed by the virtual entity, direct thevirtual entity to download additional program instructions (e.g.additional scripts) and/or other program modules from a server (e.g. viaHTTP, HTTPS, etc.). The system may additionally provide additional inputfiles from the server for use on the virtual entity to execute searchand query processes.

Next, the process 400 proceeds to act 430, where the applicationawareness system receives a response to the query and search. The systemmay receive a list of items in response to the query. For example, ifthe system submitted a windows registry query, the response may comprisea list of sub keys that exist within the submitted query key. In anotherexample scenario, the response may return no sub keys. The system mayalternatively or additionally receive other information after managingprocesses of searching for traces of the selected application. Theinformation may comprise data indicating presence of the application onthe virtual entity such as specific file types, existence of folders, orother data.

In some embodiments, the application awareness system may receive aresponse as a result of the virtual entity executing a set oftransmitted program instructions. The virtual entity, when executing theprogram instructions, may generate response information. The responseinformation may comprise files, text in a terminal, or otherinformation. In one embodiment, the application awareness system maycommand the virtual entity to transmit the information to theapplication awareness system via the control interface. Additionally oralternatively, the transmitted program instructions may cause thevirtual entity to automatically transmit the information to theapplication awareness system via the control interface. In someembodiments, the program instructions may, when executed by the virtualentity, cause the virtual entity to upload information to designatedlocations (e.g. web servers, databases, etc.).

After receiving a response to the query and search, the process 400proceeds to act 440, where the application system executing the processdetermines if the received query and/or search response indicates thatthe application is installed on the virtual entity. The system mayprocess the response to determine if items indicating presence of theapplication are included in the response. For example, if the systemreceived a response from a Windows registry query, the system may checkfor specific sub keys in the response that indicate presence of theapplication. The system may have a stored set of sub keys for theapplication that are known to indicate presence of the application on avirtual entity. If the system finds that one or more of the itemsindicating presence of the application are present in the response, itmay determine that the application is present on the virtual entity andproceed to act 460 to collect further details about the applicationinstalled on the virtual entity.

In some embodiments, the application awareness system may attemptmultiple methods of searching for presence of an application to make adetermination of whether the application is installed on the virtualentity. If the application awareness system determines that all methodsreturn results indicating that the application is not present, theprocess may proceed to act 470 where the system determines if thevirtual entity has been examined for the entire set of applications. Forexample, if a query or search response does not contain items indicatingpresence of the application, the process may proceed to act 470.

At act 470 of exemplary process 400, the system determines whether thevirtual entity has been searched for all the applications in the set ofapplications. If the system has not searched for all the applications inthe set of applications, the system may proceed to act 450, where thesystem selects another application from the set of applications. If allapplications from the set of applications have been processed, theprocess may end.

In some embodiments, exemplary process 400 may be executed by theapplication awareness system for a plurality of virtual entities in avirtual infrastructure. The process 400 may be executed in parallel forthe plurality of virtual entities or serially.

FIG. 5 is a flowchart of exemplary process 500 for accessing informationabout one or more applications installed on a virtual entity. Theprocess 500 may be performed by any suitable system and/or computingdevice and, for example, may be performed by application awarenesssystem 110 described with reference to FIG. 1.

Process 500 begins at act 510, where the application awareness systemexecuting process 500 (e.g. application awareness system 110) selects anapplication probe for an application from a set of applicationsdiscovered to be installed on the virtual entity. The applicationawareness system may have previously identified the set of applicationsinstalled on the virtual entity. In some embodiments, the applicationawareness system may have executed a process such as exemplary process400 to discover the set of applications installed on the virtual entity.The system may, for example, execute exemplary process 500 in order tocollect more details about an application discovered to be installed onthe virtual entity.

Next, process 500 proceeds to act 520, where the application awarenesssystem runs an application probe(s) for the selected application. Thesystem may use one or more suitable interfaces, such as the interfacesdiscussed above in reference to FIG. 2, through which a probe mayinterrogate the virtual entity. In some embodiments, the applicationprobe(s) may utilize standard interfaces to access applicationinformation. In other embodiments, the application probe(s) may useapplication specific interfaces to access application information.

In one embodiment, the application probe may cause the virtual entity tocarry out various actions and process results of the actions to retrieveapplication information. The running of the application probe maycomprise gaining remote access of the virtual entity and executing oneor more set of program instructions remotely. The system may, forexample, use Windows remote access to execute scripts on the virtualentity if it is running a Windows operating system. In another example,the system may use SSH to execute one or more scripts. The scripts maycomprise, for example, Power Shell or Bash scripts.

In some embodiments, the application probe may transfer a set ofexecutable program instructions which may then be executed on thevirtual entity. For example, the system may transfer a set of scriptsand/or program modules (e.g. executable files) to execute on the virtualentity. The system may transfer scripts or program modules as payloadtext over an established interface (e.g. Windows Remote Management, SSH,etc.). In other embodiments, the system may direct the virtual entity todownload scripts and/or program modules from a server (e.g. via HTTP,HTTPS, etc.). The system may provide additional input files from theserver for use on the virtual entity to execute probing processes.

Alternatively or additionally, the probe(s) may query one or moredatabases of the virtual machine using ODBC to collect information aboutthe application. The probe may submit requests to retrieve data relatedto the application from various fields of a dataset. In one example, thequeries may comprise database queries to retrieve data from fields of adatabase. In some embodiments, the probe(s) may transfer programinstructions that, when executed by the virtual entity, cause thevirtual entity to query databases in order to gather information aboutthe application.

In yet another embodiment, the probe(s) may use an application specificsoftware development kit (SDK) to execute programmed actions on thevirtual entity. A probe may manage execution of a set of programmedinstructions using the SDK. In one embodiment, the probe(s) may transferprogram instructions that, when executed by the virtual entity, causethe virtual entity to access application information using the SDK.

The system probe(s) may retrieve information specifying a particulartopology or structure of virtual entities on which a distributedapplication is installed. Additionally and/or alternatively, theprobe(s) may determine a list of virtual entities on which theapplication is running, identifiers of the virtual entities, a roleconfiguration of the application, and other configuration information.In some embodiments, the probe(s) may obtain information about anapplication's configuration from one virtual entity. In otherembodiments, the probe(s) may obtain information about an application'sconfiguration from a plurality of different entities.

FIGS. 15A-15C illustrate sets of pseudo code of program instructionswhich may be transferred to a virtual entity by various applicationprobes according to some embodiments described herein. Each set ofpseudo code may be implemented in any suitable programming language(e.g. PowerShell or Bash) using programming techniques as are known inthe art. The example program instructions may be executed by the virtualentity as part of process 500.

FIG. 15A illustrates example pseudo code 1500 of program instructionsthat may be used by an application probe(s) to query information aboutCitrix applications installed on a virtual entity. The applicationprobe(s) may, for example, transfer the program instructions to thevirtual entity and command the virtual entity to execute the programinstructions. Program instructions 1502, when executed by the virtualentity, cause the virtual entity to gain access to variousadministrative modules of an application such as Citrix Storefront. Themodules may include additional functions that may be called whenexecuted by the virtual entity in order to retrieve information aboutCitrix applications. Program instructions 1504 may, when executed by thevirtual entity, cause the virtual entity to retrieve information aboutvirtual entities that are serving a specified role (e.g. deliverycontroller) for the Citrix application. For example, the virtual entitymay retrieve a list of delivery controllers and corresponding hostservers of the delivery controllers for each instance of the CitrixStore Front application. Program instructions 1506, when executed by thevirtual entity, cause the virtual entity to retrieve and output a listof delivery controller virtual entities on which an instance of theCitrix Store Front Application is running. The probe(s) may thenretrieve this information for storing and additional processing.

FIG. 15B illustrates example pseudo code 1510 of program instructionsthat an application probe may transfer to a virtual entity and commandthe virtual entity to execute in order to retrieve additionalinformation about the Citrix XenDesktop application installed on one ormore virtual entities. Program instructions 1510, when executed by thevirtual entity, may cause the virtual entity to retrieve a list ofvirtual entities that serve in the “machine” role for the application.The pseudo code may further include program instructions 1512 that, whenexecuted, may cause the virtual entity to output a DNS name (e.g. IPaddress) of the one or more virtual entities and a session supportvalue. The session support value may specify the number of sessions theapplication can support (e.g. single or multiple). A probe may retrievethe outputted information for storing and additional processing.

FIG. 15C illustrates exemplary pseudo code 1520 of program instructionsthat an application probe(s) may transfer to a virtual entity andcommand the virtual entity to execute in order to retrieve informationabout the Microsoft SharePoint application installed on one or morevirtual entities. Program instructions 1522, when executed by thevirtual entity, cause the virtual entity to retrieve a record of virtualentities on which Microsoft SharePoint is installed. Programinstructions 1522, when executed, further cause the virtual entity toretrieve a host and a role of each virtual entity for the MicrosoftSharePoint installation. The pseudo code 1520 may further includeprogram instructions 1524 that cause the virtual entity to output theacquired information which includes the virtual entities along withtheir corresponding hosts and roles. A probe may retrieve the outputtedinformation for storing and additional processing.

A probe for an application may execute one of the methods discussedabove or a combination of more than one of the probe methods mentionedherein. Embodiments are not limited to any specific type of probes orcombination of methods or interfaces to form the probes.

Next, exemplary process 500 proceeds to act 530, where the systemretrieves information about the application installed on the virtualentity as a result of running the application probe. The information maycomprise output results from execution of script(s), data retrieved fromquerying one or more databases, information received from executingprogrammed actions, or other information received as a result of runningthe probe.

FIG. 7 illustrates examples of information that can be received by theapplication awareness system in response to running application probes.In some embodiments, the application probe may retrieve information froma virtual entity. The application probe may, for example, transferprogram instructions to the virtual entity that, when executed by thevirtual entity, cause the virtual entity to transfer the information tothe application awareness system. The virtual entity may transfer filesto the application probe.

Additionally or alternatively, the program instructions may cause thevirtual entity to upload information to a location that may then beaccessed by the application awareness system to download theinformation. For example, the virtual entity may, by executing programinstructions received from the application probe, upload filescontaining application information to a web server. The applicationawareness system may then access the web server to retrieve the files.

Information 710, for example, illustrates an output of a script that isconfigured to generate information about SQL Server installed on thevirtual entity. The information 710 includes details about theapplication such as the full application name 712, a name of the serverrunning the application 716, and a type for the application 714. Theinformation 710 indicates a configuration of the application for thevirtual entity of interest.

Information 720 of FIG. 7 is information generated from execution, by avirtual entity, of a script configured to probe the virtual entity forinformation about the XenDesktop application. Information 720 comprisesan application name 722 as well as information about the topology of thedistributed application such as host names 724 and roles 726.

Next, exemplary process 500 proceeds to act 540, where the applicationawareness system stores the retrieved information in a dataset. Thesystem may, for example, store it in database 124 described in referenceto FIG. 1. The application awareness system may process the receivedinformation to extract specific information about the applicationconfiguration on the virtual entity. The application awareness systemmay then proceed to store the information in a database. The applicationawareness system may, for example, write data encoding the informationin one or more fields of the database. The application awareness systemmay further process information gathered from individual probes and thenstore them in the dataset.

Next, process 500 proceeds to act 550, where the application awarenesssystem determines if it has exhausted the probing process for allapplications of interest that were discovered to be installed on thevirtual entity. If the application awareness system determines thatthere are applications remaining which have not been probed for 550 No,the system proceeds to act 560 where it selects the next application inthe set and returns to act 520. If the system otherwise determines thatprobes have been run for all the applications of interest, the processmay proceed to act 570.

At act 570, a virtual infrastructure management system (e.g. system 150)may utilize the stored data to execute virtual infrastructure managementservices. The system may execute application data backup, applicationdata recovery, resource allocation, and other services as discussedabove with reference to FIG. 1.

FIG. 6 illustrates an exemplary process 600 by which information aboutan application installed on a virtual entity may be collected,processed, and stored for use in virtual infrastructure managementactivities. The process 600 may be executed by a suitable system such assystem 110 discussed above with reference to FIG. 1. The applicationawareness system 110 may, for example, have discovered that theapplication was installed on the virtual entity (e.g. during processes300 and/or 400).

Process 600 begins with acts 610, 620, and 630, where the applicationawareness system initiates an application probe, gathers informationfrom the virtual entity by running the probe, and receives informationgathered as a result of running the probe. These processes may beexecuted in a manner illustrated by exemplary process 500 discussedabove.

Next, the process 600 proceeds to act 640, where the applicationawareness system processes received information to identify aconfiguration of the application on the virtual entity. The applicationawareness system may analyze the received information to determinevarious configuration details about the application installed on thevirtual machine. Configuration details may include a role of the virtualmachine for the application, an application version, a host of theapplication, details about the host of the application, and otherconfiguration information.

In some embodiments, the application may comprise a distributedapplication that is distributed across a plurality of virtual entities.In this case, the application awareness system may process the receivedinformation to identify a role of the virtual entity in the distributedapplication. The virtual entity may, for example, be a secondary storagenode of a distributed SQL Server application. Furthermore, theapplication awareness system may be able to determine an overalltopology of the distributed application from the information. Theoverall topology may, for example, comprise a specification of virtualentities that the application is distributed across and a role of eachvirtual entity.

Next, exemplary process 600 proceeds to act 650, where the applicationawareness system generates information that may be used for virtualinfrastructure management services. The application awareness system mayset certain parameters associated with each virtual entity to providethe virtual infrastructure management system with valuable details forits operations. The application awareness system may, for example,specify a role of the virtual entity in one or more distributedapplications installed on the virtual entity.

Next, exemplary process 600 proceeds to act 660, where the applicationawareness system stores the generated information in a dataset (e.g.database 124). The application awareness system may store theinformation such that it can be accessed by services of the virtualinfrastructure management system 150.

At act 670 of exemplary process 600, the virtual infrastructuremanagement system 150 may access the stored data to execute variousservices. These services include application specific data backup,application specific data recovery, resource allocation, and monitoringas discussed with reference to FIG. 1 above. It is appreciated that byproviding these services with information about the applicationconfiguration on the virtual entity, the operations associated with theservices may become significantly more efficient and accurate.

FIGS. 13A-13B illustrate an example embodiment of a monitoring serviceapplication interface that displays information that may be collected byan application awareness system as described herein (e.g. throughprocess 600).

FIG. 13A illustrates information collected about a group of virtualentities and applications running on the group of virtual entities. At1302, the interface displays groups of virtual entities that may beviewed according to site or application. The application (e.g. MicrosoftExchange Server, Microsoft SQL Server) may be distributed across aplurality of virtual entities. At 1304, the interface displays all thevirtual entities in the site. The screen displays IP addresses, names,and roles of the each virtual machine for distributed applications. At1306, 1308, 1310, 1312 the interface displays resource usage of thevirtual machines. The interface displays the most resource intensivevirtual entities in terms of CPU usage 1306, memory usage 1308,input/output operations per second (IOPS) 1310, and latency 1312.

FIG. 13B illustrates information collected about a group of virtualentities running a distributed installation of Microsoft SQL Server. Thesystem (e.g. system 110) has determined that the application on thevirtual entities is configured for failover purposes as displayed at1322. Additionally, the system has determined that the application isdistributed across a group of two virtual entities shown at 1324 alongwith their roles for the application. The system has determined onevirtual entity is a passive node and that the other is the failovernode. Furthermore, the system has calculated resource usage of eachvirtual entity as shown at 1326, 1328, 1330, 1332. It is evident, forexample, that the virtual entity acting as the active node is using moreCPU resources 1326 and conducting more TOPS 1330. The displayedinformation be used, for example, by an administrator to monitor thevirtual infrastructure.

FIG. 8 illustrates an exemplary process 800 that a system may execute inorder to discover and use a role of a virtual entity in a distributedapplication. The process 800 may be executed by a suitable system suchas system 110 discussed above with reference to FIG. 1.

Exemplary process 800 begins at act 810, where the application awarenesssystem receives information about a distributed application installed ona virtual entity. The information may be acquired using any of themethods or processes described herein. One or more methods, for example,may include running of one or more application probes to collectinformation about the distributed application. One example process thatthe system may use is exemplary process 600 described in reference toFIG. 6 above. Further, an example of information that may be received isillustrated and described above with reference to FIG. 7.

Next, process 800 proceeds to act 820, where the application awarenesssystem discovers a role for the virtual entity in the distributedapplication using the received information. The application awarenesssystem may process the received information to search for a definitionof the virtual entity role in a configuration of the application. In oneexample, the application awareness system may receive informationcomprising an output result from execution of one or more remotescripts. The scripts may comprise PowerShell or Bash scripts. The resultof the script may output information about the distribution of theapplication.

In some embodiments, the received information may include informationabout a topology of the distributed application. Referring to FIG. 7,information sample 720 illustrates an example of received information720 from an application probe for XenDesktop. The information 720includes topology information that comprises a list of hosts for theapplication 724 and a list of roles for each of those hosts 726. Theapplication awareness system may match a host name 722 of the virtualentity for the application with a name on the list 724 to discover arole for the virtual entity in the distributed application. Ininformation sample 720, for example, the application awareness systemmay discover that the virtual entity host name for the XenDesktopapplication is ‘scom-xd01-ng’ and search the lists 724 and 726 todiscover that this name corresponds to a “Delivery Controller” role ofthe application.

In some embodiments, the application awareness system may have apredefines set of fields, terms, keys, and other parameters for which itlooks up and searches for in a set of received information. Each probemay have a known standard response for which the application awarenesssystem may have a preprogrammed set of actions to analyze the receivedresponse information with. Referring again to received informationsample 720 illustrated in FIG. 7, the application awareness system mayhave predefined program instructions by which it searches one or moreareas of the response to retrieve application awareness data. Theapplication awareness system may, for example, have a programmedinstructions that, when executed by the application awareness processor112, retrieve a host name and map the host name to a role as describedabove.

Next, exemplary process 800 proceeds to act 830 and 840, where theapplication awareness system stores the discovered role and then uses itto assign a priority to the virtual entity. At act 830, the applicationawareness system may store the role of the virtual entity for anapplication. The system may analyze one or more other virtual entitiesto discover each of their roles in the respective application. Theapplication awareness system may store the roles of all virtual entitiesacross which the application is distributed. The application awarenesssystem may, for example, have a mapping of virtual entities to roles fora given distributed application.

Next, at act 840, the application awareness system proceeds to assign apriority to the virtual entity for a specific distributed applicationbased upon a role of the virtual entity in the distributed application.The application awareness system may, for example, have a predefinedranking of importance of each role for a distributed application. Theapplication awareness system may use that ranking to assign a priorityto each virtual entity across which the distributed application isdistributed. The assigned priority may comprise a ranking, score, orother parameter to indicate relative level of criticality of the virtualentity for the distributed application. Referring again to samplereceived information 720 illustrated in FIG. 7, the system may assign apriority to each host in the list of hosts 724 based on the role 726 ofeach host.

Next, the process 800 proceeds to act 850, where the applicationawareness system may set backup, recovery, and/or resource allocationpolicies according to the assign priorities. Act 850 may be executed bythe application awareness system 110 or alternatively by the virtualinfrastructure management system 150, each of which are described abovein reference to FIG. 1. The system may give higher preference to thevirtual entity for data backup, data recovery, and/or resources based ona higher priority level. Conversely, the system may give lowerpreference based on a lower priority level. If, for example, the virtualentity is discovered as a primary node of a distributed application, itmay be assigned the highest priority. In this case, it may be allocatedthe greatest computation resources such as memory and processor usage.Further, its data may be backed up with greater frequency. The virtualentity's recovery of data may also be given preference over that ofother virtual entities based on its assigned priority level.

It is appreciated that methods of discovering virtual entity roles andassigning priorities are not limited to the example methods describedabove. A system may use any suitable method for discovering virtualentity roles and use any suitable method for assigning a priority to thevirtual entity. Further, the system may use additional parametersoutside of the virtual entity role to determine a priority.

FIG. 9 illustrates an exemplary process 900 in which a system receives alist of applications installed on one or more virtual entities,determines a criticality of each application, and then assigns apriority to one or more virtual entities for use in other processes. Theexemplary process 900 may be executed by application awareness system110 discussed above with reference to FIG. 1.

Exemplary process 900 begins with act 910, where the applicationawareness system receives a list of applications installed on a virtualentity. The application awareness system may acquire this list bycarrying any one or more of techniques described herein to discoverapplications on the virtual entity. One example method that theapplication awareness system may use is process 400 described inreference to FIG. 4 above.

At act 920 of exemplary process 900, the application awareness systemdetermines a criticality of each application that is installed on thevirtual entity. The application awareness system may maintain a level ofimportance for one or more applications that it searched for in theapplication discovery stage. The level of importance may bepre-configured. For example, a user such as an IT administrator mayinput levels of importance for one or more applications. The system mayuse the importance levels to determine a criticality of the virtualentity. The application awareness system may have a predefined storedranking that indicates that Microsoft Exchange is of higher importancethan is SQL Server.

Next, the exemplary process 900 proceeds to act 930, where theapplication awareness system may assign a priority to one or morevirtual entities according to criticalities of applications, or thecomponents of applications, on the virtual entities. For virtualentities that have installed applications that are deemed more criticalby the system, the application awareness system may assign the virtualentities a higher priority. Conversely virtual entities that haveinstalled applications that are deemed less critical may be assigned alower priority. The priority may comprise a rank, score, or otherparameter. In the example that one virtual entity is discovered to haveMicrosoft Exchange and a second virtual entity is determined to have SQLServer installed on it, the system may assign a higher priority to thevirtual entity having Microsoft Exchange installed than the virtualentity with SQL Server installed based on a determination that thecriticality of Microsoft Exchange is higher than that of SQL Server.

Next, the exemplary process 900 proceeds to act 940, where theapplication awareness system may store the priority for the virtualentities. The application awareness system may maintain a mapping ofvirtual entities and their priority for one or more virtual entities ina virtual infrastructure containing multiple virtual entities. Theapplication awareness system may, for example, maintain a record of alldiscovered applications on the virtual entity and one or more priorityparameters for the virtual entity. The information may be stored in adataset such as database 124 described above in reference to FIG. 1.

Next, the exemplary process 900 proceeds to act 950, where a system mayset backup, recovery, and/or resource allocation policies for thevirtual entities according to their priorities. The policies may be setby application awareness system 110 or virtual infrastructure managementsystem 150, each of which are described above with reference to FIG. 1.The system executing act 950 may set policies for one or more servicesusing the application priorities. The system may, for example, backupdata for virtual entities of higher priority more frequently. The systemmay additionally or alternatively allocate more computation resources tohigher priority virtual entities. Also, the system may make dataassociated with higher priority virtual entities more readilyrecoverable.

FIG. 10 illustrates an exemplary process 1000, where a system, such as avirtual infrastructure management system 150, may use knowledge of whichapplications are installed on a virtual entity to determine applicationspecific back and recovery methods for the applications installed on thevirtual entity. The process 1000 may be executed by one or more suitablesystems. In some embodiments, the process 1000 may be executed byapplication awareness system 110 described above with respect to FIG. 1.In another embodiment, the process 1000 may be executed by the virtualinfrastructure management system 150.

Exemplary process 1000 begins with act 1010, where the system executingprocess 1000 may receive a list of applications that are installed on avirtual entity. The system may acquire this list by carrying any one ormore of suitable methods to discover applications on the virtual entity.One example method that the system may use is process 400 described inreference to FIG. 4 above.

Next, exemplary process 1000 proceeds to act 1020, where the system maydetermine methods of backup and recovery for one or more of thediscovered applications based on knowledge of their identities. It isappreciated that in current systems, a single backup and/or recoverymethod may be use to execute backup and recovery services for allapplications on a virtual entity without any suitable modifications foreach application. This may result in inefficient use of computationalresource and may require manual processes to refine results from thebackup and/or recovery.

In some embodiments, the system may have a predefined set of storageand/or recovery methods for each application that it conductsapplication discovery for on a virtual entity. The system may useknowledge of the application identities to assign backup and/or recoverymethods for the application, In some embodiments, the system may furtheruse information it gathers about configurations of each application onthe virtual entity to assign backup and/or recovery methods. The systemmay have multiple methods that it can assign for a single applicationbased on a configuration of the application on a specific virtualentity. In one example, a system may store one or more backup and/orrecovery policies for SQL Server, Exchange, and XenDekstop applications.Upon discovering that one or more of these applications is installed ona virtual entity, may assign methods for each application. Further, thesystem may refine the assigned policies based on specific configurationsof each application on the virtual entity as determined using, forexample, application probes such as probe 116 described with referenceto FIG. 1 above.

Next, exemplary process 1000 proceeds to act 1030, where the system maystore the determined methods of backup and/or recovery for theapplications installed on the virtual entity. The system may maintain arecord of applications installed for multiple virtual entities. Thesystem may further maintain a record of data backup and/or recoverymethods to use for the virtual entity for the applications discovered tobe installed on the virtual entity. The system may store thisinformation in a database such as database 124 described above inreference to FIG. 1.

Next, exemplary process 1000 proceeds to act 1040, where the virtualinfrastructure management system 150 may execute backup and recovery forone or more applications on the virtual entity using the stored methods.A system, such as virtual infrastructure management system 150, mayaccess the stored record of applications and corresponding methods foreach application when executing application data backup and recovery forthe virtual entity. For example, the system may be scheduled to back updata for the SQL Server application. For a respective virtual entity,the system may first look up in the database whether the applicationexists on the respective virtual entity. If the application does exist,the system may proceed to execute data backup for the applicationaccording to the determined method stored for that application.

It is appreciated that by having knowledge of whether certainapplications are installed on a virtual entity the system may avoidunnecessary computations or attempted computations on the system.Furthermore, the system may execute actions more efficiently usingapplication specific methods than using a brute force approach used incurrent systems.

FIGS. 14A-14B illustrate example screens of a backup application thatmay be executed using information collected from a system such asapplication awareness system 110 described above with respect to FIG. 1.

FIG. 14A illustrates a screen 1400 in which a user can select one ormore virtual entities 1402 to which a backup policy is to be applied. Inthis example, the virtual entities are virtual machines. In someembodiments the system may have collected information necessary to setbackup policies for the virtual entities and determined a method ofbackup for the application (e.g. during process 900 or 1000). The systemmay suggest a default backup policy or policies for virtual entities.The screen 1410 may display defaults assigned by the system. A user maythen apply the backup policy. Screen 1410 illustrates a view of thebackup application illustrating an application for which a particulardata backup policy has been applied. The Microsoft SQL Serverapplication 1412 has a bronze backup policy 1414 applied which indicatesa full backup 1416.

Embodiments herein are not restricted to only providing applicationspecific methods for application backup and recovery. Applicationspecific methods may be provided for any number of services and/oroperations associated with a virtual infrastructure. Furthermore,embodiments are not limited to any number or type of methods that may beused for any given application. Any suitable method or combination ofmethods may be used for a given application.

In some embodiments, the application awareness system may controlscheduling of execution of application discovery activities. In oneembodiment, a schedule of activities may be user configurable. Theapplication awareness system may be configured by a user to runapplication awareness processes continuously according to a definedschedule, on demand, in response to a detected trigger condition(s). Thetrigger condition(s) can include any suitable trigger such as detectedchange in environment, detected need for configuration information, orother trigger. For example, the application awareness system may detectaddition of a new virtual entity to a virtual infrastructure. Inresponse, the application awareness system may be configured to executeapplication discovery processes for one or more virtual entities of thevirtual infrastructure.

FIG. 11 illustrates an exemplary process 1100 that a system may use todetermine when to execute application discovery and probing. Theexemplary process may be executed by any suitable system. One exampleembodiment of a system that may carry out the process is applicationawareness system 110 described with reference to FIG. 1 above.

Exemplary process 1100 may begin at act 1110, where the system maydetermine whether a certain change has occurred in a virtualinfrastructure such as virtual infrastructure 130 discussed in referenceto FIG. 1 above. In one embodiment, the system may determine whether anew virtual entity has been added to the virtual infrastructure. Inother embodiments, the system may look for other changes such as updatesto virtual infrastructure hardware, software, or other events.

If the system detects the occurrence of a certain change in the virtualinfrastructure 1110 such as addition of a new virtual entity 1110, Yes,the process 1110 may proceed to act 1130. In act 1130, the system mayexecute application discovery and/or probing activities. Exampleembodiments of activities and processes executed for applicationdiscovery and probing are described in discussions of embodiments above.

If the system detects that a threshold amount of time has been reachedsince the last execution of application discovery and probing operations1120, Yes, the process 1110 may proceed to act 1130. In act 1130 thesystem may execute application discovery and/or probing activities.Example embodiments of activities and processes executed for applicationdiscovery and probing are described in discussions of embodiments above.

If, however, the system does not detect that a threshold amount of timehas been reached since the last execution of application discovery andprobing operations 1120, No, the process 1100 may return to act 1110.The system may continuously execute exemplary process 1100 in order tomaintain an updated record of applications installed on the virtualentities of the virtual infrastructure. The updated record may ensureefficient execution of management activities executed on the virtualinfrastructure by a virtual infrastructure management system such assystem 150 discussed above with reference to FIG. 1.

If the system does not detect the occurrence of a certain change in thevirtual infrastructure 1110, No, the process 1100 may proceed to act1120, where the system determines whether a threshold amount of time hasbeen reached since the last time that application discovery and probingoperations were executed. The system may have a scheduled time intervalat which it must execute application discovering and probing activitiesin order to maintain an up to date record for use by virtualinfrastructure management services. Application discovery and probingprocesses may include many processes and operations. Example embodimentsof such processes and operations are discussed above.

As described above in reference to FIG. 1, a virtual infrastructure caninclude multiple virtual entities. A virtual entity may comprise avirtual machine or a container as mentioned above.

FIG. 12 illustrates an example system 1200 that hosts a plurality ofvirtual entities, each of the virtual entities comprising a container. Acontainer based system 1210 may comprise host hardware 1212, a host OS1214, a Docker engine 1216, and one or more containers 1218, 1220, 1222.Each of the containers run with a single control hos OS 1214 and accessa single OS kernel. Given that each of the containers shares the same OSkernel, the containers do not require a unique OS as virtual machinesdo. As a result, containers may include files for applications that areinstalled on the container without a unique OS. Each container maycontain state data for the OS kernel of the container. The state datamay include a registry of applications installed on the container orother data set revealing information about installed applications.

Each of the containers may have their own unique set of applications1224, 1226, 1228. Each container may have a plurality of applicationsinstalled on the container. Applications may be distributed across morethan one container. Embodiments discussed herein with regard toapplication discovery and probing of virtual entities may be used forapplication discovery and probing of containers. Information and datagathered may be stored and used as described in discussions ofembodiments.

It is appreciated that containers may load and remove applications moreefficiently and frequently than other virtual entities. As a result,application discovery and application probing may be especially valuablefor virtual infrastructures that include containers. With virtualentities that change more frequently, application discovery and probingsystems described in embodiments herein provide information to allowvirtual infrastructure services to be executed more efficiently.

A virtual entity comprising a container may have its own identity in avirtual infrastructure. For example, the container may have its own IPaddress. An application awareness system in accordance with embodimentsdescribed herein (e.g. system 110) may execute application discovery andprobing processes as described above. In other cases, a plurality ofcontainers 1218, 1220, 1222 may share an IP address. In someembodiments, the application awareness system may first discover astructure of containers using a host OS 1214 in order to uniquelyidentify each container. The application awareness system may thenidentify a unique identification of each container. The applicationawareness system may, for example, execute operations on the host OS todiscover each container within the structure. The application awarenesssystem may then identify a unique name of each container within thestructure. The application awareness system may then execute one or moreof the processes described above in order to collect applicationawareness information from each container.

It should be appreciated that various concepts and systems disclosedabove may be implemented in any of numerous ways, as the concepts arenot limited to any particular manner of implementation. For instance,the present disclosure is not limited to the other particulararrangements of components shown in the various figures, as otherarrangements may also be suitable. Such examples of specificimplementations and applications are provided solely for illustrativepurposes.

FIG. 16 illustrates an example of a suitable computing systemenvironment 1600 on which the invention may be implemented. Thecomputing system environment 1600 is only one example of a suitablecomputing environment and is not intended to suggest any limitation asto the scope of use or functionality of the invention. Neither shouldthe computing environment 1600 be interpreted as having any dependencyor requirement relating to any one or combination of componentsillustrated in the exemplary operating environment 1600.

The invention is operational with numerous other special purposecomputing system environments or configurations, which, in someembodiments, may be created by programming a general purpose computingdevice. Examples of wellknown computing systems, environments, and/orconfigurations that may be suitable for use with the invention include,but are not limited to, personal computers, server computers (includingthose implementing cloud computing or data services), smartphones,tablets, hand-held or laptop devices, multiprocessor systems,microprocessor-based systems, set top boxes, programmable consumerelectronics, network PCs, minicomputers, mainframe computers,distributed computing environments that include any of the above systemsor devices, and the like. Some of the elements illustrated in FIG. 16may not be present, depending on the specific type of computing device.Alternatively, additional elements may be present in someimplementations.

The computing environment may execute computer-executable instructions,such as program modules. Generally, program modules include routines,programs, objects, components, data structures, etc. that performparticular tasks or implement particular abstract data types. Someembodiments may also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a communications network. These distributed systems may be whatare known as enterprise computing systems or, in some embodiments, maybe “cloud” computing systems. In a distributed computing environment,program modules may be located in both local and/or remote computerstorage media including memory storage devices.

With reference to FIG. 16, an exemplary system for implementing theinvention includes a general purpose computing device in the form of acomputer 1610. Components of computer 1610 may include, but are notlimited to, a processing unit 1620, a system memory 1630, and a systembus 1621 that couples various system components including the systemmemory to the processing unit 1620. The system bus 1621 may be any ofseveral types of bus structures including a memory bus or memorycontroller, a peripheral bus, and a local bus using any of a variety ofbus architectures. By way of example, and not limitation, sucharchitectures include Industry Standard Architecture (ISA) bus, MicroChannel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnect (PCI) bus, also known as Mezzanine bus.

Computer 1610 typically includes a variety of computer readable media.Computer readable media can be any available media that can be accessedby computer 1610 and includes both volatile and nonvolatile media,removable and non-removable media. By way of example, and notlimitation, computer readable media may comprise computer storage mediaand communication media. Computer storage media includes both volatileand nonvolatile, removable and non-removable media implemented in anymethod or technology for storage of information such as computerreadable instructions, data structures, program modules or other data.Computer storage media includes, but is not limited to, RAM, ROM,EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical disk storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can accessed by computer 1610.

Communication media typically embodies computer readable instructions,data structures, program modules or other data in a modulated datasignal such as a carrier wave or other transport mechanism and includesany information delivery media. The term “modulated data signal” means asignal that has one or more of its characteristics set or changed insuch a manner as to encode information in the signal. By way of example,and not limitation, communication media includes wired media such as awired network or direct-wired connection, and wireless media such asacoustic, RF, infrared and other wireless media. Combinations of the anyof the above should also be included within the scope of computerreadable media.

The system memory 1630 includes computer storage media in the form ofvolatile and/or nonvolatile memory such as read only memory (ROM) 1631and random access memory (RAM) 1632. A basic input/output system 1633(BIOS), containing the basic routines that help to transfer informationbetween elements within computer 1610, such as during start-up, may bestored in ROM 1631. RAM 1632 may contain data and/or program modulesthat are immediately accessible to and/or presently being operated on byprocessing unit 1620. By way of example, and not limitation, FIG. 16illustrates operating system 1634, application programs 1635, otherprogram modules 1636, and program data 1637.

The computer 1610 may also include other removable/non-removable,volatile/nonvolatile computer storage media. By way of example only,FIG. 16 illustrates a hard disk drive 1641 that reads from or writes tonon-removable, nonvolatile magnetic media. Such a hard disk drive may beimplemented by a rotating disk drive or as a solid state drive, such asis implemented with FLASH memory.

FIG. 16 also illustrates a slot 1651 that reads from or writes to aremovable, nonvolatile memory 1652, such as a memory stick or FLASHmemory, and an optical disk drive 1655 that reads from or writes to aremovable, nonvolatile optical disk 1656 such as a CD ROM or otheroptical media. Other removable/non-removable, volatile/nonvolatilecomputer storage media that can be used in the exemplary operatingenvironment include, but are not limited to, magnetic tape cassettes,flash memory cards, digital versatile disks, digital video tape, solidstate RAM, solid state ROM, and the like. The hard disk drive 1641 maybe connected to the system bus 1621 through a non-removable memoryinterface such as interface 1640, and slot 1651 and optical disk drive1655 may be connected to the system bus 1621 by a removable memoryinterface, such as interface 1650. However, it should be appreciatedthat, in some embodiments, some or all of the computer readable mediaavailable to a device may be accessed over a communication network.

The drives and their associated computer storage media discussed aboveand illustrated in FIG. 16, provide storage of computer readableinstructions, data structures, program modules and other data for thecomputer 1610. In FIG. 16, for example, hard disk drive 1641 isillustrated as storing operating system 1644, application programs 1645,other program modules 1646, and program data 1647. Note that thesecomponents can either be the same as or different from operating system1634, application programs 1635, other program modules 1636, and programdata 1637. Operating system 1644, application programs 1645, otherprogram modules 1646, and program data 1647 are given different numbershere to illustrate that, at a minimum, they are different copies.

A computing environment may include one or more input/output devices.Some such input/out devices may provide a user interface. A user mayenter commands and information into the computer 1610 through inputdevices such as a keyboard 1662 and pointing device 1661, depicted as amouse. However, other forms of pointing devices may be used, including atrackball, touch pad or touch screen. Other input devices (not shown)may include a microphone, joystick, game pad, satellite dish, scanner,or the like. The microphone, for example, may support voice input, whichmay be recorded as an audio file or may be translated, such as usingspeech recognition, to a text format for further processing. These andother input devices are often connected to the processing unit 1620through a user input interface 1660 that is coupled to the system bus,but may be connected by other interface and bus structures, such as aparallel port, game port or a universal serial bus (USB).

The computing device may include one or more output devices, includingan output device that may form a portion of a user interface. A monitor1691 or other type of display device may also connected to the systembus 1621 via an interface, such as a video interface 1690, to form avisual output device. In addition to the monitor, computers may alsoinclude other peripheral output devices such as speakers 1697 andprinter 1696, which may be connected through an output peripheralinterface 1695. The speaker, for example, may enable output viasynthesized voice or in any other suitable way.

The computer 1610 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer1680. The remote computer 1680 may be a personal computer, a server, arouter, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto the computer 1610, although only a memory storage device 1681 hasbeen illustrated in FIG. 16. The logical connections depicted in FIG. 16include a local area network (LAN) 1671 and a wide area network (WAN)1673, but may also include other networks. Such networking environmentsare commonplace in offices, enterprise-wide computer networks, intranetsand the Internet. Alternatively or additionally, the WAN may include acellular network.

When used in a LAN networking environment, the computer 1610 isconnected to the LAN 1671 through a network interface or adapter 1670.When used in a WAN networking environment, the computer 1610 typicallyincludes a modem 1672 or other means for establishing communicationsover the WAN 1673, such as the Internet. The modem 1672, which may beinternal or external, may be connected to the system bus 1621 via theuser input interface 1660, or other appropriate mechanism.

In a networked environment, program modules depicted relative to thecomputer 1610, or portions thereof, may be stored in the remote memorystorage device. By way of example, and not limitation, FIG. 16illustrates remote application programs 1685 as residing on memorydevice 1681. It will be appreciated that the network connections shownare exemplary and other means of establishing a communications linkbetween the computers may be used.

Depending on the nature of the computing device, one or more additionalelements may be present. For example, a smart phone or other portableelectronic device may include a camera, capable of capturing still orvideo images. In some embodiments, a computing device may includesensors such as a global positioning system (GPS) to sense location andinertial sensors such as a compass, an inclinometer and/o ranaccelerometer. The operating system may include utilities to controlthese devices to capture data from them and make it available toapplications executing on the computing device.

As another example, in some embodiments, a computing device may includea network interface to implement a personal area network. Such aninterface may operate in accordance with any suitable technology,including a Bluetooth, Zigbee or an 802.11 ad hoc mode, for example.

Having thus described several aspects of at least one embodiment of thisinvention, it is to be appreciated that various alterations,modifications, and improvements will readily occur to those skilled inthe art.

Such alterations, modifications, and improvements are intended to bepart of this disclosure, and are intended to be within the spirit andscope of the invention. Further, though advantages of the presentinvention are indicated, it should be appreciated that not everyembodiment of the invention will include every described advantage. Someembodiments may not implement any features described as advantageousherein and in some instances. Accordingly, the foregoing description anddrawings are by way of example only.

The above-described embodiments of the present invention can beimplemented in any of numerous ways. For example, the embodiments may beimplemented using hardware, software or a combination thereof. Whenimplemented in software, the software code can be executed on anysuitable processor or collection of processors, whether provided in asingle computer or distributed among multiple computers. Such processorsmay be implemented as integrated circuits, with one or more processorsin an integrated circuit component, including commercially availableintegrated circuit components known in the art by names such as CPUchips, GPU chips, microprocessor, microcontroller, or co-processor.Alternatively, a processor may be implemented in custom circuitry, suchas an ASIC, or semicustom circuitry resulting from configuring aprogrammable logic device. As yet a further alternative, a processor maybe a portion of a larger circuit or semiconductor device, whethercommercially available, semi-custom or custom. As a specific example,some commercially available microprocessors have multiple cores suchthat one or a subset of those cores may constitute a processor. Though,a processor may be implemented using circuitry in any suitable format.

Further, it should be appreciated that a computer may be embodied in anyof a number of forms, such as a rack-mounted computer, a desktopcomputer, a laptop computer, or a tablet computer. Additionally, acomputer may be embedded in a device not generally regarded as acomputer but with suitable processing capabilities, including a PersonalDigital Assistant (PDA), a smart phone or any other suitable portable orfixed electronic device.

Also, a computer may have one or more input and output devices. Thesedevices can be used, among other things, to present a user interface.Examples of output devices that can be used to provide a user interfaceinclude printers or display screens for visual presentation of outputand speakers or other sound generating devices for audible presentationof output. Examples of input devices that can be used for a userinterface include keyboards, and pointing devices, such as mice, touchpads, and digitizing tablets. As another example, a computer may receiveinput information through speech recognition or in other audible format.In the embodiment illustrated, the input/output devices are illustratedas physically separate from the computing device. In some embodiments,however, the input and/or output devices may be physically integratedinto the same unit as the processor or other elements of the computingdevice. For example, a keyboard might be implemented as a soft keyboardon a touch screen. Alternatively, the input/output devices may beentirely disconnected from the computing device, and functionallyintegrated through a wireless connection.

Such computers may be interconnected by one or more networks in anysuitable form, including as a local area network or a wide area network,such as an enterprise network or the Internet. Such networks may bebased on any suitable technology and may operate according to anysuitable protocol and may include wireless networks, wired networks orfiber optic networks.

Also, the various methods or processes outlined herein may be coded assoftware that is executable on one or more processors that employ anyone of a variety of operating systems or platforms. Additionally, suchsoftware may be written using any of a number of suitable programminglanguages and/or programming or scripting tools, and also may becompiled as executable machine language code or intermediate code thatis executed on a framework or virtual machine.

In this respect, the invention may be embodied as a computer readablestorage medium (or multiple computer readable media) (e.g., a computermemory, one or more floppy discs, compact discs (CD), optical discs,digital video disks (DVD), magnetic tapes, flash memories, circuitconfigurations in Field Programmable Gate Arrays or other semiconductordevices, or other tangible computer storage medium) encoded with one ormore programs that, when executed on one or more computers or otherprocessors, perform methods that implement the various embodiments ofthe invention discussed above. As is apparent from the foregoingexamples, a computer readable storage medium may retain information fora sufficient time to provide computer-executable instructions in anon-transitory form. Such a computer readable storage medium or mediacan be transportable, such that the program or programs stored thereoncan be loaded onto one or more different computers or other processorsto implement various aspects of the present invention as discussedabove. As used herein, the term “computer-readable storage medium”encompasses only a computer-readable medium that can be considered to bea manufacture (i.e., article of manufacture) or a machine. Alternativelyor additionally, the invention may be embodied as a computer readablemedium other than a computer-readable storage medium, such as apropagating signal.

The terms “program” or “software” are used herein in a generic sense torefer to any type of computer code or set of computer-executableinstructions that can be employed to program a computer or otherprocessor to implement various aspects of the present invention asdiscussed above. Additionally, it should be appreciated that accordingto one aspect of this embodiment, one or more computer programs thatwhen executed perform methods of the present invention need not resideon a single computer or processor, but may be distributed in a modularfashion amongst a number of different computers or processors toimplement various aspects of the present invention.

Computer-executable instructions may be in many forms, such as programmodules, executed by one or more computers or other devices. Generally,program modules include routines, programs, objects, components, datastructures, etc. that perform particular tasks or implement particularabstract data types. Typically the functionality of the program modulesmay be combined or distributed as desired in various embodiments.

Also, data structures may be stored in computer-readable media in anysuitable form. For simplicity of illustration, data structures may beshown to have fields that are related through location in the datastructure. Such relationships may likewise be achieved by assigningstorage for the fields with locations in a computer-readable medium thatconveys relationship between the fields. However, any suitable mechanismmay be used to establish a relationship between information in fields ofa data structure, including through the use of pointers, tags or othermechanisms that establish relationship between data elements.

Various aspects of the present invention may be used alone, incombination, or in a variety of arrangements not specifically discussedin the embodiments described in the foregoing and is therefore notlimited in its application to the details and arrangement of componentsset forth in the foregoing description or illustrated in the drawings.For example, aspects described in one embodiment may be combined in anymanner with aspects described in other embodiments.

Also, the invention may be embodied as a method, of which an example hasbeen provided. The acts performed as part of the method may be orderedin any suitable way. Accordingly, embodiments may be constructed inwhich acts are performed in an order different than illustrated, whichmay include performing some acts simultaneously, even though shown assequential acts in illustrative embodiments.

Use of ordinal terms such as “first,” “second,” “third,” etc., in theclaims to modify a claim element does not by itself connote anypriority, precedence, or order of one claim element over another or thetemporal order in which acts of a method are performed, but are usedmerely as labels to distinguish one claim element having a certain namefrom another element having a same name (but for use of the ordinalterm) to distinguish the claim elements.

Also, the phraseology and terminology used herein is for the purpose ofdescription and should not be regarded as limiting. The use of“including,” “comprising,” or “having,” “containing,” “involving,” andvariations thereof herein, is meant to encompass the items listedthereafter and equivalents thereof as well as additional items.

What is claimed is:
 1. A system for gathering information from adistributed computer system implementing a virtual infrastructure, thevirtual infrastructure comprising a plurality of virtual entities, andthe system comprising: a network interface; a memory; at least oneprocessor operatively connected to the network interface and the memory;and a non-transitory computer readable medium comprising computerexecutable instructions, that, when executed by the at least oneprocessor, implement: a controller; an application discovery componentconfigured to: execute, via the network interface, a protocol associatedwith an operating system of a plurality of operating systems toestablish a control path with the operating system, wherein theoperating system is running on a virtual entity of the plurality ofvirtual entities; transmit, via the control path, a first set of programinstructions to the virtual entity that, when executed by the virtualentity, query an application registry associated with the operatingsystem of the virtual entity for information associated with one or moreapplications; receive, via the control path responsive to the query, afirst set of data; determine, from the first set of data, one or moreapplications installed on the virtual entity; and based on thedetermination of the one or more applications are installed, selectivelystore in the memory, information specifying that the one or moreapplications are installed on the virtual entity; a plurality ofapplication probes, each application probe associated with anapplication and configured to: select a second set of programinstructions based on at least one of the one or more applications;transmit, via the control path, the second set of program instructionsto the virtual entity; receive, responsive to execution of the secondset of program instructions by the virtual entity, a second set datafrom the virtual entity; determine, from the second set of data, aconfiguration of the at least one of the one or more applications;store, in the memory, information specifying the determinedconfiguration of the at least one of the one or more applications; andoutput the configuration information to a virtual infrastructuremanagement system, wherein the virtual infrastructure management systemcomprises a data backup service or a monitoring service; and wherein thecontroller is configured to: execute a first stage in which thecontroller executes the application discovery component; identify,responsive to execution of the first stage, a set of applicationsdetermined to be installed on the virtual entity; select a set ofapplication probes for execution such that each application probe of theset of application probes is associated with an application of the setof applications; and execute a second stage in which the controllerexecutes the set of the plurality of application probes.
 2. The systemof claim 1, wherein the application discovery component is furtherconfigured to: transmit, to the virtual entity via the control path, athird set of program instructions that, when executed by the virtualentity, search for a trace of an application on the virtual entity;receive, responsive to the execution, a third set of data indicative ofwhether the trace is detected on the virtual entity; and determine,based on the third set of data, if the application is installed on thevirtual entity.
 3. The system of claim 2, wherein the applicationdiscovery component is further configured to transmit the third set ofprogram instructions responsive to determining, from the first set ofdata, that the application is not installed on the virtual entity. 4.The system of claim 1, wherein the controller is configured to executethe application discovery component and at least one of the plurality ofapplication probes responsive to detecting an addition of a new virtualentity to the virtual infrastructure.
 5. The system of claim 1, whereinthe non-transitory computer readable medium comprises computerexecutable instructions, that, when executed by the at least oneprocessor, further implement a scheduler that is configured to executethe application discovery component and at least one of the plurality ofapplication probes responsive to detecting an expiration of a timeperiod.
 6. The system according to claim 1, wherein executing theprotocol associated with the operating system to establish a controlpath with the operating system comprises executing the protocol toestablish the control path with a kernel of the operating system.
 7. Acomputer-implemented method for gathering information about a virtualinfrastructure comprising a plurality of virtual entities, thecomputer-implemented method comprising: executing, in a first stage, byan application discovery component via a network interface, a protocolassociated with an operating system of a plurality of operating systemsto establish a control path via an interface of the operating systemconfigured for communication according to the protocol, wherein theoperating system is running on a virtual entity of the plurality ofvirtual entities; accessing, by the application discovery component viathe control path, first data associated with one or more applications ina data set associated with the operating system of the virtual entity;determining, by the application discovery component from the first data,that a particular application is installed on the virtual entity;selecting an application probe for execution such that the applicationprobe is associated with the application determined to be installed onthe virtual entity; initiating, in a second stage, by the selectedapplication probe, via the control path, execution of programinstructions at the virtual entity; receiving, by the application probesecond data from the virtual entity generated based on execution of theprogram instructions at the virtual entity; determining, by theapplication probe based on the second data, a configuration of theparticular application on the virtual entity; and outputting to avirtual infrastructure management system, the configuration information.8. The method of claim 7, further comprising determining, by theapplication probe, that the particular application is distributed acrossa set of virtual entities.
 9. The method of claim 8, further comprisingidentifying and storing, by the application probe responsive todetermining that the particular application is a distributed applicationcomprising a plurality of components, a role of a component of thedistributed application installed on the virtual entity.
 10. The methodaccording to claim 9, further comprising assigning, by the applicationprobe, a priority to the virtual entity based on the role of thecomponent of the distributed application installed on the virtualentity.
 11. The method of claim 7, further comprising determining thatthe virtual entity has a unique IP address.
 12. The method of claim 7,further comprising recognizing that the virtual entity is a containerand that the operating system is running on a host machine of thecontainer.
 13. The method of claim 12, further comprising determining astructure of one or more containers running on the host machine andidentifying an ID of the container.
 14. The method of claim 7, furthercomprising removing the program instructions from the virtual entity andany items produced on the virtual entity as a result of executing theprogram instructions.
 15. A computer-implemented method of collectingapplication information in a virtual infrastructure, the methodcomprising: executing, in a first stage, by a controller, an applicationdiscovery component, the executing comprising transmitting queries toeach of a plurality of virtual entities within the virtualinfrastructure, wherein the queries are formatted to elicit data fromthe plurality of virtual entities indicating presence of applications;identifying, by the controller, a set of applications determined to beinstalled on one or more of the plurality of virtual entities;selecting, by the controller prior to execution of a second stage, a setof application probes for execution such that each application probe ofthe set of application probes is associated with an application of theset of applications; executing, in the second stage, by the controller,a probe deployment component, the executing comprising communicating tovirtual entities of the plurality of virtual entities computerexecutable instructions; executing the computer executable instructionsat the virtual entities to retrieve information about applicationconfigurations on respective ones of the plurality of virtual entities;and storing data about applications running on the plurality of virtualentities and configurations of the applications based on data receivedin response to the queries and received as a result of executing thecomputer-executable instructions.
 16. The computer-implemented method ofclaim 15, further comprising: assigning computational resources to theplurality of virtual entities based on the data about applicationsrunning on the plurality of virtual entities and the configuration ofthe applications.
 17. The computer-implemented method of claim 15,wherein: retrieving information about application configurationscomprises discovering a role of a component of a distributed applicationexecuting on a virtual entity of the plurality of virtual entities. 18.The computer-implemented method of claim 15, wherein: transmittingqueries to each of the plurality of virtual entities comprises queryingoperating system registries on the virtual entities.
 19. Thecomputer-implemented method of claim 15, wherein: the computerexecutable instructions comprise scripts that are automatically executedon virtual entities upon deployment.
 20. The computer-implemented methodof claim 15, wherein: transmitting queries to each of the plurality ofvirtual entities is performed on a time schedule.
 21. Thecomputer-implemented method of claim 15, wherein: transmitting queriesto each of the plurality of virtual entities is performed in response todetecting that a virtual entity has been added to the virtualinfrastructure.
 22. The computer-implemented method of claim 15,wherein: transmitting queries to each of the plurality of virtualentities comprises transmitting via a communication mechanism of anoperating system of the virtual entities.
 23. The method according toclaim 15 further comprising, executing application specific data backupon at least one of the plurality of virtual entities based on the set ofapplications determined to be installed on the at least one virtualentity.